package top.huxy.boot.util;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateUtils {
    /**
     * 2019/1/2 15:45:56
     * yyyy 4位数年            2019
     * yy   2位数年            19
     * MM   2位月份            01
     * M    1位月份            1   如果是2位数，就返回2位
     * dd   2位日期            02
     * d    1位日期            2   如果是2位数，就返回2位
     * hh   2位小时，12小时制度 03
     * h    1位小时，12小时制度 3   如果是2位数，就返回2位
     * HH   2位小时，24小时制度 15
     * H    1位小时，24小时制度 15  如果是2位数，就返回2位
     * mm   2位分钟            45
     * m    1位分钟            45  如果是2位数，就返回2位
     * ss   2位秒钟            56
     * s    1位秒钟            56  如果是2位数，就返回2位
     */
    public static String format(String s, Date d) {
        return new SimpleDateFormat(s).format(d);
    }

    public static String formatAsDate(Date d) {
        return format("yyyy-MM-dd", d);
    }

    public static String formatAsTime(Date d) {
        return format("hh:mm:ss", d);
    }

    public static String formatAsDateTime(Date d) {
        return format("yyyy-MM-dd HH:mm:ss", d);
    }

    /**
     * 返回日期当天0点0分0秒的时间戳。
     * 如2021年1月2日12点10分30秒变成2021年1月2日0点0分0秒
     *
     * @param time
     * @return
     */
    public static long getDayTime(long time) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(time);
        // 时
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        // 分
        calendar.set(Calendar.MINUTE, 0);
        // 秒
        calendar.set(Calendar.SECOND, 0);
        // 毫秒
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTimeInMillis();
    }

    public static void main(String[] args) {
        long dayTime = getDayTime(System.currentTimeMillis());
        System.out.println(dayTime);
    }
}
